#include <iostream>
#include <cstdio>
#include <stdarg.h>

using namespace std;

void func(int a, ...)
{
    va_list p;
    va_start(p, a); // 指向第一个参数的下一个参数
    int num;
    for (int i = 0; i < a; i++)
    {
        num = va_arg(p, int); // 获取当前指针指向的参数并再次指向下一个参数
        cout << num << endl;
    }
 
    // printf("%d %d %d\n", *(p + 1), *(p + 2), *(p + 3));
}


int my_printf(const char *fomat, ...)
{
    va_list p;
    va_start(p, fomat);
    //"%d,%c,%d,%c"
    while(*fomat != '\0')
    {
        if(*fomat == '%')
        {
            fomat++;
            switch (*fomat)
            {
                case 'd':
                {
                    int result = va_arg(p, int);
                    putchar(result + '0');
                    break;
                }
                case 'c':
                {
                    //printf("CCCC!\n");
                    char ch = va_arg(p, int);
                    putchar(ch);
                    break;
                }
            }
        }
        else
        {
            putchar(*fomat);
            
        }

        fomat++;
    }

    va_end(p);
}


int main(int argc, char **argv)
{
    my_printf("%d,%c,%d,%c", 1, '2', 3, '4');
    // printf("hello world");

    // func(0);
    // func(2,1,2);
    //func(3, 1, 2, 3);

    return 0;
}